/*
 * Copyright (c) 2021 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * introduction:
 * @author HelloKun （https://space.bilibili.com/475950146）
 * @brief 智慧终端机器人MRobot -详细功能说明见mrobot.h
 * @version 0.1 ，关闭oled显示，提升NAN配网成功率；先初始化mpu等，再启动NAN；控制大量使用switch 配合return实现较快响应
 * @funtion
 *       0.碰一碰连接APP 
 *       1.接收语音模块指令，控制机器人或者互联设备
 *       2.接收APP指令，控制机器人或互联设备
 * @date
 *       2021.12-2022.04: 南北向基础
 *       2022.03.16: 实现基础运动控制
 *       2022.04-05：APP UI 与硬件联动
 *       2022.05.16-06.14 优化 
 *              提供风扇、台灯亮度调节；
 *              连接任意一台互联设备，即可通过机器人控制所有设备
 *              将常量宏定义，减少魔法变量，便于理解和增添设备。
 *      Tips：关闭oled显示，NAN效率更高，开机实现不到一秒连接
 * @copyright Copyright (c) 2022
 *
 */

#ifndef _MROBOT_H__
#define _MROBOT_H__

#define ALL_DATA_INIT_C0 '0'
#define ALL_DATA_INIT_0 0

#define FAN_OFF "10\n"
#define FAN_LEV_1 "11\n"
#define FAN_LEV_2 "12\n" // default
#define FAN_LEV_3 "13\n"

#define DOOR_OPEN "21\n"
#define DOOR_CLOSE "20\n"

#define LAMB_OFF "30\n"
#define LAMB_LEV_1 "31\n"
#define LAMB_LEV_2 "32\n" // defalut
#define LAMB_LEV_3 "33\n"

#define WATER_GO "41\n"

typedef enum
{
        WATER_GO_S = 0x61,
        LAMB_OFF_S = 0x70,
        LAMB_LEV_1_S,
        LAMB_LEV_2_S,
        LAMB_LEV_3_S,
        DOOR_OPEN_S = 0x81,
        FAN_OFF_S = 0x90,
        FAN_LEV_1_S,
        FAN_LEV_2_S,
        FAN_LEV_3_S,

} speaker_union_device;

typedef enum
{
        TURN_LEFT = 76,  // 'L'
        TURN_RIGHT = 82, // 'R'
        FORWARD = 70,    // 'F'
        BACKWARD = 66,   // 'B'
        CIRCLE,          // 'C'
} app_mrobot_status;

typedef enum
{
        TURN_LEFT_S = 1,
        TURN_RIGHT_S,
        FORWARD_S,
        BACKWARD_S,
        CIRCLE_S,
} speaker_mrobot_status;

typedef enum
{
        EMOJI_1 = '1',
        EMOJI_2,
        EMOJI_3,
        EMOJI_4,
        EMOJI_5,
        EMOJI_6,
        EMOJI_7,
        EMOJI_8,
        ON_OFF,
} emoji_status;

#endif

/**
 * @brief 数据交互说明
 * 1.语音交互指令定义[十六进制串口交互]：
 *  // 数据说明
    // DATA: AA 55 01 20 06 55 AA
    // Format：head + index + data_H + data_L + tail
        1.1 Hi3861接收SUT03指令：
                左转、向左转：
                        RX：AA 55 01 55 AA

                右转、向右转：
                        RX：AA 55 02 55 AA

                过来、前进：
                        RX：AA 55 03 55 AA

                后退、回去：
                        RX：AA 55 04 55 AA

                转圈、转个圈：
                        RX：AA 55 05 55 AA

                我可以摸摸你吗：//配合转圈
                        RX：AA 55 05 55 AA

                打开风扇：
                        RX：AA 55 91 55 AA //lev-1
                        RX：AA 55 92 55 AA //lev-2 default
                        RX：AA 55 93 55 AA //lev-3

                关闭风扇：
                        RX：AA 55 90 55 AA

                开门：
                        RX：AA 55 81 55 AA

                打开台灯：
                        RX：AA 55 71 55 AA  //lev-1
                        RX：AA 55 72 55 AA  //lev-2  default
                        RX：AA 55 73 55 AA  //lev-3
                关闭台灯：
                        RX：AA 55 70 55 AA

                帮我浇水、帮我养花
                        RX：AA 55 61 55 AA

                温度多少、气温多少：
                        RX：AA 55 51 55 AA

        1.2 Hi3861发送指令到SUT03：
                emoji_hello [带猫叫声]:
                        TX：AA 55 01 55 AA

                emoji_o:
                        TX：AA 55 02 55 AA

                emoji_hi:
                        TX：AA 55 03 55 AA

                emoji_wuwu:
                        TX：AA 55 04 55 AA

                emoji_harmony [带一个激灵音效 可以用作触摸后的响应]:
                        TX：AA 55 05 55 AA

                emoji_red_light:
                        TX：AA 55 06 55 AA

                emoji_yellow_light:
                        TX：AA 55 07 55 AA

                emoji_green_light:
                        TX：AA 55 08 55 AA

                发送温度【09号】【整数部分】【小数部分】：
                        TX：AA 55 09 16 01 55 AA  //22.1℃


[以下数据均是ASCALL码交互]
2. 风扇控制交互数据帧
     Turn On fan:  '11'
     Turn Off fan: '10'

3. 开门控制交互数据帧
    Open door:'21'

4. 台灯控制交互数据帧
    Turn On lamb: '31'
    Turn Off lamb:'30'

4. 浇水控制交互数据帧
    Watering:'41'

5. 获取温度
    Temperature：'51'


唤醒：
    你好小萌
    小萌小萌
    小萌你好


免唤醒交互：
    指令       附加功能
    我回来了 	【B6 pwm-1】
    睡觉了 		【B6 pwm-0】
    过来  		【uart1 发送前进指令】


 *
 */